import java.util.Scanner;

public class demo {


//    剪花布条(String类的indexOf方法和substring方法)▲▲▲
//一块花布条，里面有些图案，另有一块直接可用的小饰条，里面也有一些图案。对于给定的花布条和小饰条，计算一下能从花布条中尽可能剪出几块小饰条来呢？
//    输入描述:
//输入包含多组数据。
//每组数据包含两个字符串s,t，分别是成对出现的花布条和小饰条，其布条都是用可见ASCII字符表示的，可见的ASCII字符有多少个，
//布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。
//    输出描述:
//对应每组输入，输出能从花纹布中剪出的最多小饰条个数，如果一块都没有，那就输出0，每个结果占一行

    public static int cut(String s, String t) {
        // 如果找到返回t在s中存在的第一个下标  如果不存在返回-1
        // 存在返回t在s中第一次出现的第一个字符的下标
        int n = s.indexOf(t);
        if (n == -1) {
            return 0;
        }else {
            return 1+cut(s.substring(n+t.length()), t);
        }
    }

    public static void main1(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String s = scanner.next();
            String t = scanner.next();
            System.out.println(cut(s, t));
        }
    }




//    客似云来
//NowCoder开了一家早餐店，这家店的客人都有个奇怪的癖好：他们只要来这家店吃过一次早餐，就会每天都过来；并且，所有人在这家店吃了两天早餐后，
//接下来每天都会带一位新朋友一起来品尝。于是，这家店的客人从最初一个人发展成浩浩荡荡成百上千人：1、1、2、3、5……
//现在，NowCoder想请你帮忙统计一下，某一段时间范围那他总共卖出多少份早餐（假设每位客人只吃一份早餐）。

    public static void main(String[] args) {
        long[] arr = new long[80];
        arr[0] = 1;
        arr[1] = 1;
        for (int i=2; i<80; i++) {
            arr[i] = arr[i-1] + arr[i-2];
        }
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            long count = 0;

            int from = scanner.nextInt();
            int to = scanner.nextInt();
            for (int i=from-1; i<=to-1; i++) {
                count += arr[i];
            }
            System.out.println(count);
        }
    }
}
